/*****************************************************************************************************************
  * 用途：jCore核心框架
  * 作者：高宇舟
  * 修改日志：
  *    日期         修改原因            修改人              版本
  * 2012.07.10        创建             高宇舟           @version 1.0
******************************************************************************************************************/
(function(wnd,unf){
    var doc = wnd.document;

    (function(arr) {
        for(var i=0,len=arr.length; i<len; i++){
			if(/jCore.js/.test(arr[i].src)){
  				jCore.root = arr[i].src.replace('/jCore.js',''); 
  				break;
  			}
    	}
	})(doc.getElementsByTagName('script'),wnd.jCore = {version:'1.0'});
	
	var $UI = jCore.UI = {
		/******************************************************
		 * 功能：加载等待图片
		 * 描述：
		 * resultPanel：图片加载面板
		 ******************************************************/
		beLoading: function(result) {
			$(result).html('<li><em style="text-align: center;width:100%"><strong>数据加载中Loading...</strong></em></li>');
		},
		
		/******************************************************
		 * 功能：普通分页显示方法
		 * 描述：
		 * url：分页请求路径
		 * pageSize：分页大小
		 * xmlname：返回数据头名称
		 * result：分页内容显示面板
		 * fun：回调函数
		 * bottomPagePanel：底部页码显示面板
		 * defaultHtml：如果没有找到数据，则将这个变量默认的显示在result分页内容显示面板中   
		 * current：当前页    
		 * topPagePanel: 头部页码显示面板  
		 ******************************************************/
		changePage: function(url,pageSize,xmlname,result,fun,bottomPagePanel,defaultHtml,current,topPagePanel,pageId) {
			$(bottomPagePanel).text('');
			if (topPagePanel) {
				$(topPagePanel).text('');
			}
			$UI.beLoading(result);
			var totalRows = 'data.root.'+xmlname+'.page.totalRows';
			var currentpage = 'data.root.'+xmlname+'.page.currentPage';
			var i = 1;
			if(current){
				i = current;
			}
			url = encodeURI(url);
			$.post(url, {PAGE_SIZE:pageSize,CURRENT_PAGE:i},function(data) {
				if(data.success) {
					if(eval(totalRows) && eval(currentpage) && bottomPagePanel && eval(totalRows)>pageSize) {
						$(bottomPagePanel).pagination(
							eval(totalRows), {
								items_per_page: pageSize,
								current_page: eval(currentpage) - 1,
								num_display_entries: 10,
								callback: function(page_id, panel) {
									$.post(url, {
										PAGE_SIZE: pageSize,
										CURRENT_PAGE: page_id + 1
									}, function(data) {
										$UI.showdata(data,xmlname,fun,result,defaultHtml,eval(currentpage),eval(totalRows));
										if(pageId){
											$(pageId).val(eval(currentpage));
										}
										$("html,body").animate({scrollTop: $(result).offset().top - 50},"slow");
									}, 'json');
								}
							}
						);
						if (topPagePanel) {
							$(topPagePanel).pagination(
								eval(totalRows), {
									items_per_page: pageSize,
									current_page: eval(currentpage) - 1,
									num_display_entries: 0,
									first_text: '',
									last_text: '',
									callback: function(page_id, panel) {
										$.post(url, {
											PAGE_SIZE: pageSize,
											CURRENT_PAGE: page_id + 1
										}, function(data) {
											$UI.showdata(data,xmlname,fun,result,defaultHtml,eval(currentpage),eval(totalRows));
										}, 'json');
									}
								}
							);
						}
					}
					$UI.showdata(data,xmlname,fun,result,defaultHtml,eval(currentpage),eval(totalRows));
				} else {
					alert(data.errors.errmsg);
				}
			}, 'json');
		},
		
		/******************************************************
		 * 功能：非分页显示方法
		 * 描述：
		 * url：请求路径
		 * xmlname：返回数据头名称
		 * result：内容显示面板
		 * fun：回调函数
		 * defaultHtml：如果没有找到数据，则将这个变量默认的显示在result内容显示面板中           
		 ******************************************************/
		listPage: function(url,xmlname,result,fun,defaultHtml) {
			url = encodeURI(url);
			$.post(url, {}, function(data) {
				$UI.showdata(data,xmlname,fun,result,defaultHtml);	 
			}, 'json');
		},
		
		/******************************************************
		 * 功能：分页或非分页 具体某一页数据显示方法
		 * 描述：
		 * data：action返回的数据
		 * xmlname：返回数据头名称
		 * result：(分页/非分页)内容显示面板
		 * fun：回调函数
		 * defaultHtml：如果没有找到数据，则将这个变量默认的显示在result分页内容显示面板中
		 * current：当前页           
		 ******************************************************/
		showdata: function(data,xmlname,fun,result,defaultHtml,current,total) {
			$(result).text('');	// 清空原来的数据(包括加载提示)
			var t = true;
			if(eval('data.root.'+xmlname+'.rs') && eval('data.root.'+xmlname+'.rs.length')>0){
				$.each(eval('data.root.'+xmlname+'.rs'),function(i,n){
					fun(this,$(result),i,n,eval('data.root.'+xmlname+'.rs.length'),current,total);
					t = false;
				});
			}
			if(t) {
				$(result).append(defaultHtml);
			}
		}
	};
	
	var $Obj = jCore.Obj = {
		/******************************************************
		 * 功能：生成浏览过商品对象
		 ******************************************************/
		browseObj: function() {
			var id = '';
			var name = '';   
  			var price = 0.0;
  			var imgUrl = '';
			return new function(){   
				this.id = id;   
  				this.name = name;
				this.price = price;
				this.imgUrl = imgUrl;   
  			}
		}
	};
})(window);